Contemporary data processing systems often produce or operate on large amounts of data—commonly on the order of gigabytes or terabytes in enterprise systems. Since the data may be critical to the operation of a business or other enterprise, many techniques have been developed to prevent data loss or impaired access. One basic approach is to copy all of the data to a secondary storage medium such as magnetic tape or disks or optical disks. This backup strategy has many drawbacks: copying large amounts of data is time-consuming, and applications using the data may have to be disabled during the backup to avoid introducing data inconsistencies that would render the backup useless. Full backups may take hours or clays to complete, and a similar amount of time to restore. Also, backups only preserve data stored at the point in time the backup is made. Changes introduces afterward are unprotected and may be lost until the next backup completes successfully.
Incremental backup strategies, where only data that has changed since a previous incremental or full backup, can reduce the amount of time and storage required for a backup, at a cost of increased complexity and recovery time. Nevertheless, even incremental backups cannot provide protection for new data and data modifications stored between backups. To reduce the amount of data “at risk,” system designers are turning to data mirroring schemes. In a mirror, a complete copy of the data on a source volume is maintained on a destination volume. The destination storage is managed by an independent system, often located in a completely different physical datacenter. Mirror operations may be arranged so that the mirror is only a few minutes or even just a few seconds out-of-date, so only data created or changed during that short time span may be lost due to a catastrophic failure. Some mirrors operate synchronously: they are always up to date.
Unfortunately, closely-coupled systems such as a mirror source and mirror destination may tend to affect each other in detrimental ways also. For example, in a synchronous mirror, if the destination is busy and cannot complete a mirror transaction immediately, the source may be delayed as well. To avoid this sort of cascade effect, mirror data may be written to a temporary file and “replayed” later when the mirror destination is capable of processing the transaction. However, writing to the temporary file, re-reading the temporary file, and (eventually) writing the data to the mirror consumes additional mirror destination processing and input/output (“I/O”) resources, which may cause additional delays in normal mirror transaction processing.
Storage server operational schemes that insulate cooperating servers from one another, without imposing significant additional loads upon either, may improve overall system performance in many environments.